a0274bc16728326672096fb6dc15afee0f1b3dfb,MekHQ/src/mekhq/gui/adapter/PersonnelTableMouseAdapter.java,PersonnelTableMouseAdapter,maybeShowPopup,#MouseEvent#,951
Before Change
JPopupMenu popup = new JPopupMenu();
if (e.isPopupTrigger()) {
if (personnelTab.getPersonnelTable().getSelectedRowCount() == 0) {
return;
}
int row = personnelTab.getPersonnelTable().getSelectedRow();
boolean oneSelected = personnelTab.getPersonnelTable().getSelectedRowCount() == 1;
Person person = personnelTab.getPersonModel().getPerson(personnelTab.getPersonnelTable()
.convertRowIndexToModel(row));
JMenuItem menuItem = null;
JMenu menu = null;
JMenu submenu = null;
JCheckBoxMenuItem cbMenuItem = null;
Person[] selected = personnelTab.getSelectedPeople();
// **lets fill the pop up menu**//
if (StaticChecks.areAllEligible(selected)) {
menu = new JMenu(resourceMap.getString("changeRank.text")); //$NON-NLS-1$
Ranks ranks = person.getRanks();
for (int rankOrder = 0; rankOrder < Ranks.RC_NUM; rankOrder++) {
Rank rank = ranks.getAllRanks().get(rankOrder);
int profession = person.getProfession();
// Empty professions need swapped before the
// continuation
while (ranks.isEmptyProfession(profession)
&& profession != Ranks.RPROF_MW) {
profession = ranks
.getAlternateProfession(profession);
}
if (rank.getName(profession).equals(HYPHEN)) {
continue;
}
// re-route through any profession redirections,
// starting with the empty profession check
while (rank.getName(profession).startsWith("--") //$NON-NLS-1$
&& profession != Ranks.RPROF_MW) {
if (rank.getName(profession).equals("--")) { //$NON-NLS-1$
profession = ranks
.getAlternateProfession(profession);
} else if (rank.getName(profession)
.startsWith("--")) { //$NON-NLS-1$
profession = ranks.getAlternateProfession(rank
.getName(profession));
}
}
if (rank.getRankLevels(profession) > 0) {
submenu = new JMenu(rank.getName(profession));
for (int level = 0; level <= rank
.getRankLevels(profession); level++) {
cbMenuItem = new JCheckBoxMenuItem(
rank.getName(profession)
+ Utilities.getRomanNumeralsFromArabicNumber(level, true));
cbMenuItem.setActionCommand(makeCommand(CMD_RANK, String.valueOf(rankOrder), String.valueOf(level)));
if (person.getRankNumeric() == rankOrder
&& person.getRankLevel() == level) {
cbMenuItem.setSelected(true);
}
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
submenu.add(cbMenuItem);
}
if (submenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(submenu, 20);
}
menu.add(submenu);
} else {
cbMenuItem = new JCheckBoxMenuItem(
rank.getName(profession));
cbMenuItem.setActionCommand(makeCommand(CMD_RANK, String.valueOf(rankOrder)));
if (person.getRankNumeric() == rankOrder) {
cbMenuItem.setSelected(true);
}
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
menu.add(cbMenuItem);
}
}
if (menu.getItemCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
}
menu = new JMenu(resourceMap.getString("changeRankSystem.text")); //$NON-NLS-1$
// First allow them to revert to the campaign system
cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("useCampaignRankSystem.text")); //$NON-NLS-1$
cbMenuItem.setActionCommand(makeCommand(CMD_RANKSYSTEM, "-1")); //$NON-NLS-1$
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
menu.add(cbMenuItem);
for (int system = 0; system < Ranks.RS_NUM; system++) {
if (system == Ranks.RS_CUSTOM) {
continue;
}
cbMenuItem = new JCheckBoxMenuItem(
Ranks.getRankSystemName(system));
cbMenuItem.setActionCommand(makeCommand(CMD_RANKSYSTEM, String.valueOf(system)));
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
if (system == person.getRanks().getRankSystem()) {
cbMenuItem.setSelected(true);
}
menu.add(cbMenuItem);
}
if (menu.getItemCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
if (StaticChecks.areAllWoB(selected)) {
// MD Ranks
menu = new JMenu(resourceMap.getString("changeMDRank.text")); //$NON-NLS-1$
for (int i = Rank.MD_RANK_NONE; i < Rank.MD_RANK_NUM; i++) {
cbMenuItem = new JCheckBoxMenuItem(
Rank.getManeiDominiRankName(i));
cbMenuItem.setActionCommand(makeCommand(CMD_MANEI_DOMINI_RANK, String.valueOf(i)));
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
if (i == person.getManeiDominiRank()) {
cbMenuItem.setSelected(true);
}
menu.add(cbMenuItem);
}
if (menu.getItemCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
// MD Classes
menu = new JMenu(resourceMap.getString("changeMDClass.text")); //$NON-NLS-1$
for (int i = Person.MD_NONE; i < Person.MD_NUM; i++) {
cbMenuItem = new JCheckBoxMenuItem(
Person.getManeiDominiClassNames(i, Ranks.RS_WOB));
cbMenuItem.setActionCommand(makeCommand(CMD_MANEI_DOMINI_CLASS, String.valueOf(i)));
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
if (i == person.getManeiDominiClass()) {
cbMenuItem.setSelected(true);
}
menu.add(cbMenuItem);
}
if (menu.getItemCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
}
if (StaticChecks.areAllWoBOrComstar(selected)) {
menu = new JMenu(resourceMap.getString("changePrimaryDesignation.text")); //$NON-NLS-1$
for (int i = Person.DESIG_NONE; i < Person.DESIG_NUM; i++) {
cbMenuItem = new JCheckBoxMenuItem(
Person.parseDesignator(i));
cbMenuItem.setActionCommand(makeCommand(CMD_PRIMARY_DESIGNATOR, String.valueOf(i)));
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
if (i == person.getPrimaryDesignator()) {
cbMenuItem.setSelected(true);
}
menu.add(cbMenuItem);
}
if (menu.getItemCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
menu = new JMenu(resourceMap.getString("changeSecondaryDesignation.text")); //$NON-NLS-1$
for (int i = Person.DESIG_NONE; i < Person.DESIG_NUM; i++) {
cbMenuItem = new JCheckBoxMenuItem(
Person.parseDesignator(i));
cbMenuItem.setActionCommand(makeCommand(CMD_SECONDARY_DESIGNATOR, String.valueOf(i)));
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
if (i == person.getSecondaryDesignator()) {
cbMenuItem.setSelected(true);
}
menu.add(cbMenuItem);
}
if (menu.getItemCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
}
menu = new JMenu(resourceMap.getString("changeStatus.text")); //$NON-NLS-1$
for (int s = 0; s < Person.S_NUM; s++) {
cbMenuItem = new JCheckBoxMenuItem(Person.getStatusName(s));
if (person.getStatus() == s) {
cbMenuItem.setSelected(true);
}
cbMenuItem.setActionCommand(makeCommand(CMD_CHANGE_STATUS, String.valueOf(s)));
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
menu.add(cbMenuItem);
}
popup.add(menu);
if(oneSelected) {
popup.add(newMenuItem(resourceMap.getString("imprison.text"), CMD_IMPRISON, person.isFree())); //$NON-NLS-1$
popup.add(newMenuItem(resourceMap.getString("free.text"), CMD_FREE, !person.isFree())); //$NON-NLS-1$
popup.add(newMenuItem(resourceMap.getString("recruit.text"), CMD_RECRUIT, //$NON-NLS-1$
person.isBondsman() || person.isWillingToDefect()));
}
menu = new JMenu(resourceMap.getString("changePrimaryRole.text")); //$NON-NLS-1$
for (int i = Person.T_MECHWARRIOR; i < Person.T_NUM; i++) {
if (person.canPerformRole(i)
&& person.getSecondaryRole() != i) {
cbMenuItem = new JCheckBoxMenuItem(Person.getRoleDesc(
i, personnelTab.getCampaign().getFaction().isClan()));
cbMenuItem.setActionCommand(makeCommand(CMD_PRIMARY_ROLE, String.valueOf(i)));
if (person.getPrimaryRole() == i) {
cbMenuItem.setSelected(true);
}
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
menu.add(cbMenuItem);
}
}
if (menu.getItemCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
menu = new JMenu(resourceMap.getString("changeSecondaryRole.text")); //$NON-NLS-1$
for (int i = 0; i < Person.T_NUM; i++) {
if (i == Person.T_NONE
|| (person.canPerformRole(i) && person
.getPrimaryRole() != i)) {
// you cant be an astech if you are a tech, or a medic
// if you are a doctor
if (person.isTechPrimary() && i == Person.T_ASTECH) {
continue;
}
if (person.getPrimaryRole() == Person.T_DOCTOR
&& i == Person.T_MEDIC) {
continue;
}
cbMenuItem = new JCheckBoxMenuItem(Person.getRoleDesc(
i, personnelTab.getCampaign().getFaction().isClan()));
cbMenuItem.setActionCommand(makeCommand(CMD_SECONDARY_ROLE, String.valueOf(i)));
if (person.getSecondaryRole() == i) {
cbMenuItem.setSelected(true);
}
cbMenuItem.addActionListener(this);
cbMenuItem.setEnabled(true);
menu.add(cbMenuItem);
}
}
if (menu.getItemCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
// Bloodnames
if (StaticChecks.areAllClanEligible(selected)) {
menuItem = new JMenuItem(resourceMap.getString("giveRandomBloodname.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_BLOODNAME);
menuItem.addActionListener(this);
menuItem.setEnabled(StaticChecks.areAllActive(selected));
popup.add(menuItem);
}
// change salary
if (personnelTab.getCampaign().getCampaignOptions().payForSalaries()) {
menuItem = new JMenuItem(resourceMap.getString("setSalary.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_EDIT_SALARY);
menuItem.addActionListener(this);
menuItem.setEnabled(StaticChecks.areAllActive(selected));
popup.add(menuItem);
}
// switch pilot
menu = new JMenu(resourceMap.getString("assignToUnit.text")); //$NON-NLS-1$
JMenu pilotMenu = new JMenu(resourceMap.getString("assignAsPilot.text")); //$NON-NLS-1$
JMenu crewMenu = new JMenu(resourceMap.getString("assignAsCrewmember.text")); //$NON-NLS-1$
JMenu driverMenu = new JMenu(resourceMap.getString("assignAsDriver.text")); //$NON-NLS-1$
JMenu gunnerMenu = new JMenu(resourceMap.getString("assignAsGunner.text")); //$NON-NLS-1$
JMenu soldierMenu = new JMenu(resourceMap.getString("assignAsSoldier.text")); //$NON-NLS-1$
JMenu techMenu = new JMenu(resourceMap.getString("assignAsTech.text")); //$NON-NLS-1$
JMenu navMenu = new JMenu(resourceMap.getString("asignAsNavigator.text")); //$NON-NLS-1$
/*
* if(!person.isAssigned()) { cbMenuItem.setSelected(true); }
*/
if (oneSelected && person.isActive()
&& !(person.isPrisoner() || person.isBondsman())) {
for (Unit unit : personnelTab.getCampaign().getUnits()) {
if (!unit.isAvailable()) {
continue;
}
if (unit.usesSoloPilot()) {
if (unit.canTakeMoreDrivers()
&& person.canDrive(unit.getEntity())
&& person.canGun(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_PILOT, unit.getId().toString()));
cbMenuItem.addActionListener(this);
pilotMenu.add(cbMenuItem);
}
} else if (unit.usesSoldiers()) {
if (unit.canTakeMoreGunners()
&& person.canGun(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_SOLDIER, unit.getId().toString()));
cbMenuItem.addActionListener(this);
soldierMenu.add(cbMenuItem);
}
} else {
if (unit.canTakeMoreDrivers()
&& person.canDrive(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_DRIVER, unit.getId().toString()));
cbMenuItem.addActionListener(this);
if (unit.getEntity() instanceof Aero) {
pilotMenu.add(cbMenuItem);
} else {
driverMenu.add(cbMenuItem);
}
}
if (unit.canTakeMoreGunners()
&& person.canGun(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_GUNNER, unit.getId().toString()));
cbMenuItem.addActionListener(this);
gunnerMenu.add(cbMenuItem);
}
if (unit.canTakeMoreVesselCrew()
&& person.hasSkill(SkillType.S_TECH_VESSEL)) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_CREW, unit.getId().toString()));
cbMenuItem.addActionListener(this);
crewMenu.add(cbMenuItem);
}
if (unit.canTakeNavigator()
&& person.hasSkill(SkillType.S_NAV)) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_NAVIGATOR, unit.getId().toString()));
cbMenuItem.addActionListener(this);
navMenu.add(cbMenuItem);
}
}
if (unit.canTakeTech() && person.canTech(unit.getEntity())
&& (person.getMaintenanceTimeUsing() + unit.getMaintenanceTime() <= 480)) {
cbMenuItem = new JCheckBoxMenuItem(String.format(resourceMap.getString("maintenanceTimeDesc.format"), //$NON-NLS-1$
unit.getName(), unit.getMaintenanceTime()));
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_TECH, unit.getId().toString()));
cbMenuItem.addActionListener(this);
techMenu.add(cbMenuItem);
}
}
if (pilotMenu.getItemCount() > 0) {
menu.add(pilotMenu);
if (pilotMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(pilotMenu, 20);
}
}
if (driverMenu.getItemCount() > 0) {
menu.add(driverMenu);
if (driverMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(driverMenu, 20);
}
}
if (crewMenu.getItemCount() > 0) {
menu.add(crewMenu);
if (crewMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(crewMenu, 20);
}
}
if (navMenu.getItemCount() > 0) {
menu.add(navMenu);
if (navMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(navMenu, 20);
}
}
if (gunnerMenu.getItemCount() > 0) {
menu.add(gunnerMenu);
if (gunnerMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(gunnerMenu, 20);
}
}
if (soldierMenu.getItemCount() > 0) {
menu.add(soldierMenu);
if (soldierMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(soldierMenu, 20);
}
}
if (techMenu.getItemCount() > 0) {
menu.add(techMenu);
if (techMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(techMenu, 20);
}
}
menu.setEnabled(!person.isDeployed());
popup.add(menu);
} else if (StaticChecks.areAllActive(selected) && StaticChecks.areAllEligible(selected)) {
for (Unit unit : personnelTab.getCampaign().getUnits()) {
if (!unit.isAvailable()) {
continue;
}
if (StaticChecks.areAllInfantry(selected)) {
if (!(unit.getEntity() instanceof Infantry) || unit.getEntity() instanceof BattleArmor) {
continue;
}
if (unit.canTakeMoreGunners() && person.canGun(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_SOLDIER, unit.getId().toString()));
cbMenuItem.addActionListener(this);
soldierMenu.add(cbMenuItem);
}
} else if (StaticChecks.areAllBattleArmor(selected)) {
if (!(unit.getEntity() instanceof BattleArmor)) {
continue;
}
if (unit.canTakeMoreGunners() && person.canGun(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_SOLDIER, unit.getId().toString()));
cbMenuItem.addActionListener(this);
soldierMenu.add(cbMenuItem);
}
} else if (StaticChecks.areAllVeeGunners(selected)) {
if (!(unit.getEntity() instanceof Tank)) {
continue;
}
if (unit.canTakeMoreGunners() && person.canGun(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_GUNNER, unit.getId().toString()));
cbMenuItem.addActionListener(this);
gunnerMenu.add(cbMenuItem);
}
} else if (StaticChecks.areAllVesselGunners(selected)) {
if (!(unit.getEntity() instanceof Aero)) {
continue;
}
if (unit.canTakeMoreGunners() && person.canGun(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_GUNNER, unit.getId().toString()));
cbMenuItem.addActionListener(this);
gunnerMenu.add(cbMenuItem);
}
} else if (StaticChecks.areAllVesselCrew(selected)) {
if (!(unit.getEntity() instanceof Aero)) {
continue;
}
if (unit.canTakeMoreVesselCrew()
&& person.hasSkill(SkillType.S_TECH_VESSEL)) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_CREW, unit.getId().toString()));
cbMenuItem.addActionListener(this);
crewMenu.add(cbMenuItem);
}
} else if (StaticChecks.areAllVesselPilots(selected)) {
if (!(unit.getEntity() instanceof Aero)) {
continue;
}
if (unit.canTakeMoreDrivers()
&& person.canDrive(unit.getEntity())) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_VESSEL_PILOT, unit.getId().toString()));
cbMenuItem.addActionListener(this);
pilotMenu.add(cbMenuItem);
}
} else if (StaticChecks.areAllVesselNavigators(selected)) {
if (!(unit.getEntity() instanceof Aero)) {
continue;
}
if (unit.canTakeNavigator()
&& person.hasSkill(SkillType.S_NAV)) {
cbMenuItem = new JCheckBoxMenuItem(
unit.getName());
// TODO: check the box
cbMenuItem.setActionCommand(makeCommand(CMD_ADD_NAVIGATOR, unit.getId().toString()));
cbMenuItem.addActionListener(this);
navMenu.add(cbMenuItem);
}
}
}
if (soldierMenu.getItemCount() > 0) {
menu.add(soldierMenu);
if (soldierMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(soldierMenu, 20);
}
}
if (pilotMenu.getItemCount() > 0) {
menu.add(pilotMenu);
if (pilotMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(pilotMenu, 20);
}
}
if (driverMenu.getItemCount() > 0) {
menu.add(driverMenu);
if (driverMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(driverMenu, 20);
}
}
if (crewMenu.getItemCount() > 0) {
menu.add(crewMenu);
if (crewMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(crewMenu, 20);
}
}
if (navMenu.getItemCount() > 0) {
menu.add(navMenu);
if (navMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(navMenu, 20);
}
}
if (gunnerMenu.getItemCount() > 0) {
menu.add(gunnerMenu);
if (gunnerMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(gunnerMenu, 20);
}
}
if (soldierMenu.getItemCount() > 0) {
menu.add(soldierMenu);
if (soldierMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(soldierMenu, 20);
}
}
menu.setEnabled(!person.isDeployed());
popup.add(menu);
}
cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("none.text")); //$NON-NLS-1$
cbMenuItem.setActionCommand(makeCommand(CMD_REMOVE_UNIT, "-1")); //$NON-NLS-1$
cbMenuItem.addActionListener(this);
menu.add(cbMenuItem);
if (oneSelected && person.isActive()) {
if ((person.getAge(personnelTab.getCampaign().getCalendar()) > 13) && (person.getSpouseID() == null)) {
menu = new JMenu(resourceMap.getString("changeSpouse.text")); //$NON-NLS-1$
JMenuItem surnameMenu;
JMenu spouseMenu;
String type;
for (Person ps : personnelTab.getCampaign().getPersonnel()) {
if (person.safeSpouse(ps) && !ps.isDeadOrMIA()) {
String pStatus;
if (ps.isBondsman()) {
pStatus = String.format(resourceMap.getString("marriageBondsmanDesc.format"), //$NON-NLS-1$
ps.getFullName(), ps.getAge(personnelTab.getCampaign().getCalendar()), ps.getRoleDesc());
} else if (ps.isPrisoner()) {
pStatus = String.format(resourceMap.getString("marriagePrisonerDesc.format"), //$NON-NLS-1$
ps.getFullName(), ps.getAge(personnelTab.getCampaign().getCalendar()), ps.getRoleDesc());
} else {
pStatus = String.format(resourceMap.getString("marriagePartnerDesc.format"), //$NON-NLS-1$
ps.getFullName(), ps.getAge(personnelTab.getCampaign().getCalendar()), ps.getRoleDesc());
}
spouseMenu = new JMenu(pStatus);
type = resourceMap.getString("marriageNoNameChange.text"); //$NON-NLS-1$
surnameMenu = new JMenuItem(type);
surnameMenu.setActionCommand(
makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_NO_CHANGE));
surnameMenu.addActionListener(this);
spouseMenu.add(surnameMenu);
if (!ps.isClanner() && !person.isClanner()) {
type = resourceMap.getString("marriageRenameSpouse.text"); //$NON-NLS-1$
surnameMenu = new JMenuItem(type);
surnameMenu.setActionCommand(
makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_YOURS));
surnameMenu.addActionListener(this);
spouseMenu.add(surnameMenu);
type = resourceMap.getString("marriageRenameYourself.text"); //$NON-NLS-1$
surnameMenu = new JMenuItem(type);
surnameMenu.setActionCommand(
makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_SPOUSE));
surnameMenu.addActionListener(this);
spouseMenu.add(surnameMenu);
type = resourceMap.getString("marriageHyphenateYourself.text"); //$NON-NLS-1$
surnameMenu = new JMenuItem(type);
surnameMenu.setActionCommand(
makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_HYP_YOURS));
surnameMenu.addActionListener(this);
spouseMenu.add(surnameMenu);
type = resourceMap.getString("marriageHyphenateSpouse.text"); //$NON-NLS-1$
surnameMenu = new JMenuItem(type);
surnameMenu.setActionCommand(
makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_HYP_SPOUSE));
surnameMenu.addActionListener(this);
spouseMenu.add(surnameMenu);
}
menu.add(spouseMenu);
}
}
if (menu.getItemCount() > 30) {
MenuScroller.setScrollerFor(menu, 20);
}
popup.add(menu);
}
if (person.getSpouseID() != null) {
menuItem = new JMenuItem(resourceMap.getString("removeSpouse.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_REMOVE_SPOUSE);
menuItem.addActionListener(this);
popup.add(menuItem);
}
menu = new JMenu(resourceMap.getString("spendXP.text")); //$NON-NLS-1$
JMenu currentMenu = new JMenu(resourceMap.getString("spendOnCurrentSkills.text")); //$NON-NLS-1$
JMenu newMenu = new JMenu(resourceMap.getString("spendOnNewSkills.text")); //$NON-NLS-1$
for (int i = 0; i < SkillType.getSkillList().length; i++) {
String type = SkillType.getSkillList()[i];
int cost = person.hasSkill(type) ? person.getSkill(type).getCostToImprove() : SkillType.getType(type).getCost(0);
if( cost >= 0 ) {
String desc = String.format(resourceMap.getString("skillDesc.format"), type, cost); //$NON-NLS-1$
menuItem = new JMenuItem(desc);
menuItem.setActionCommand(makeCommand(CMD_IMPROVE, type, String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(person.getXp() >= cost);
if(person.hasSkill(type)) {
currentMenu.add(menuItem);
} else {
newMenu.add(menuItem);
}
}
}
menu.add(currentMenu);
menu.add(newMenu);
if (personnelTab.getCampaign().getCampaignOptions().useAbilities()) {
JMenu abMenu = new JMenu(resourceMap.getString("spendOnSpecialAbilities.text")); //$NON-NLS-1$
int cost = -1;
for (Enumeration<IOption> i = person.getOptions(PilotOptions.LVL3_ADVANTAGES); i.hasMoreElements(); ) {
IOption ability = i.nextElement();
if (!ability.booleanValue()) {
SpecialAbility spa = SpecialAbility.getAbility(ability.getName());
if (null == spa) {
continue;
}
if (!spa.isEligible(person)) {
continue;
}
cost = spa.getCost();
String costDesc;
if(cost < 0) {
costDesc = resourceMap.getString("costNotPossible.text"); //$NON-NLS-1$
} else {
costDesc = String.format(resourceMap.getString("costValue.format"), cost); //$NON-NLS-1$
}
boolean available = (cost >= 0) && (person.getXp() >= cost);
if (ability.getName().equals("weapon_specialist")) { //$NON-NLS-1$
Unit u = personnelTab.getCampaign().getUnit(person.getUnitId());
if (null != u) {
JMenu specialistMenu = new JMenu(resourceMap.getString("weaponSpecialist.text")); //$NON-NLS-1$
TreeSet<String> uniqueWeapons = new TreeSet<String>();
for (int j = 0; j < u.getEntity().getWeaponList().size(); j++) {
Mounted m = u.getEntity().getWeaponList().get(j);
uniqueWeapons.add(m.getName());
}
for (String name : uniqueWeapons) {
menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), name, costDesc)); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_WEAPON_SPECIALIST, name, String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(available);
specialistMenu.add(menuItem);
}
abMenu.add(specialistMenu);
}
} else if (ability.getName().equals("specialist")) { //$NON-NLS-1$
JMenu specialistMenu = new JMenu(resourceMap.getString("specialist.text")); //$NON-NLS-1$
menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("laserSpecialist.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_SPECIALIST, Crew.SPECIAL_LASER, String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(available);
specialistMenu.add(menuItem);
menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("missileSpecialist.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_SPECIALIST, Crew.SPECIAL_MISSILE, String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(available);
specialistMenu.add(menuItem);
menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("ballisticSpecialist.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_SPECIALIST, Crew.SPECIAL_BALLISTIC, String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(available);
specialistMenu.add(menuItem);
abMenu.add(specialistMenu);
} else if (ability.getName().equals("range_master")) { //$NON-NLS-1$
JMenu specialistMenu = new JMenu(resourceMap.getString("rangemaster.text")); //$NON-NLS-1$
menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("rangemaster_med.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_RANGEMASTER, Crew.RANGEMASTER_MEDIUM, String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(available);
specialistMenu.add(menuItem);
menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("rangemaster_lng.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_RANGEMASTER, Crew.RANGEMASTER_LONG, String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(available);
specialistMenu.add(menuItem);
menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("rangemaster_xtm.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_RANGEMASTER, Crew.RANGEMASTER_EXTREME, String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(available);
specialistMenu.add(menuItem);
abMenu.add(specialistMenu);
} else {
menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), ability.getDisplayableName(), costDesc)); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_ABILITY, ability.getName(), String.valueOf(cost)));
menuItem.addActionListener(this);
menuItem.setEnabled(available);
abMenu.add(menuItem);
}
}
}
if (abMenu.getItemCount() > 20) {
MenuScroller.setScrollerFor(abMenu, 20);
}
menu.add(abMenu);
}
popup.add(menu);
}
if (oneSelected && person.isActive()) {
if (personnelTab.getCampaign().getCampaignOptions().useEdge()) {
menu = new JMenu(resourceMap.getString("setEdgeTriggers.text")); //$NON-NLS-1$
cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("edgeTriggerHeadHits.text")); //$NON-NLS-1$
cbMenuItem.setSelected(person.getOptions()
.booleanOption(OPT_EDGE_HEADHIT));
cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_HEADHIT));
cbMenuItem.addActionListener(this);
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem(
resourceMap.getString("edgeTriggerTAC.text")); //$NON-NLS-1$
cbMenuItem.setSelected(person.getOptions()
.booleanOption(OPT_EDGE_TAC));
cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_TAC));
cbMenuItem.addActionListener(this);
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("edgeTriggerKO.text")); //$NON-NLS-1$
cbMenuItem.setSelected(person.getOptions()
.booleanOption(OPT_EDGE_KO));
cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_KO));
cbMenuItem.addActionListener(this);
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("edgeTriggerExplosion.text")); //$NON-NLS-1$
cbMenuItem.setSelected(person.getOptions()
.booleanOption(OPT_EDGE_EXPLOSION));
cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_EXPLOSION));
cbMenuItem.addActionListener(this);
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("edgeTriggerMASCFailure.text")); //$NON-NLS-1$
cbMenuItem.setSelected(person.getOptions()
.booleanOption(OPT_EDGE_MASC_FAILURE));
cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_MASC_FAILURE));
cbMenuItem.addActionListener(this);
menu.add(cbMenuItem);
popup.add(menu);
}
menu = new JMenu(resourceMap.getString("specialFlags.text")); //$NON-NLS-1$
cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("dependent.text")); //$NON-NLS-1$
cbMenuItem.setSelected(person.isDependent());
cbMenuItem.setActionCommand(CMD_DEPENDENT);
cbMenuItem.addActionListener(this);
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("commander.text")); //$NON-NLS-1$
cbMenuItem.setSelected(person.isCommander());
cbMenuItem.setActionCommand(CMD_COMMANDER);
cbMenuItem.addActionListener(this);
menu.add(cbMenuItem);
popup.add(menu);
} else if (StaticChecks.areAllActive(selected)) {
if (personnelTab.getCampaign().getCampaignOptions().useEdge()) {
menu = new JMenu(resourceMap.getString("setEdgeTriggers.text")); //$NON-NLS-1$
submenu = new JMenu(resourceMap.getString("on.text")); //$NON-NLS-1$
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerHeadHits.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_HEADHIT, TRUE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerTAC.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_TAC, TRUE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerKO.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_KO, TRUE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerExplosion.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_EXPLOSION, TRUE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerMASCFailure.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_MASC_FAILURE, TRUE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menu.add(submenu);
submenu = new JMenu(resourceMap.getString("off.text")); //$NON-NLS-1$
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerHeadHits.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_HEADHIT, FALSE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerTAC.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_TAC, FALSE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerKO.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_KO, FALSE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerExplosion.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_EXPLOSION, FALSE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerMASCFailure.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_MASC_FAILURE, FALSE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menu.add(submenu);
popup.add(menu);
}
menu = new JMenu(resourceMap.getString("specialFlags.text")); //$NON-NLS-1$
submenu = new JMenu(resourceMap.getString("dependent.text")); //$NON-NLS-1$
menuItem = new JMenuItem(resourceMap.getString("yes.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_DEPENDENT, TRUE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("no.text")); //$NON-NLS-1$
menuItem.setActionCommand(makeCommand(CMD_DEPENDENT, FALSE));
menuItem.addActionListener(this);
submenu.add(menuItem);
menu.add(submenu);
popup.add(menu);
}
if (oneSelected) {
// change portrait
menuItem = new JMenuItem(resourceMap.getString("changePortrait.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_EDIT_PORTRAIT);
menuItem.addActionListener(this);
menuItem.setEnabled(true);
popup.add(menuItem);
// change Biography
menuItem = new JMenuItem(resourceMap.getString("changeBiography.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_EDIT_BIOGRAPHY);
menuItem.addActionListener(this);
menuItem.setEnabled(true);
popup.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("changeCallsign.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_CALLSIGN);
menuItem.addActionListener(this);
menuItem.setEnabled(true);
popup.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("editPersonnelLog.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_EDIT_PERSONNEL_LOG);
menuItem.addActionListener(this);
menuItem.setEnabled(true);
popup.add(menuItem);
}
menuItem = new JMenuItem(resourceMap.getString("addSingleLogEntry.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_EDIT_LOG_ENTRY);
menuItem.addActionListener(this);
menuItem.setEnabled(true);
popup.add(menuItem);
if (oneSelected || StaticChecks.allHaveSameUnit(selected)) {
menuItem = new JMenuItem(resourceMap.getString("assignKill.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_KILL);
menuItem.addActionListener(this);
menuItem.setEnabled(true);
popup.add(menuItem);
}
if (oneSelected) {
menuItem = new JMenuItem(resourceMap.getString("editKillLog.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_EDIT_KILL_LOG);
menuItem.addActionListener(this);
menuItem.setEnabled(true);
popup.add(menuItem);
}
menuItem = new JMenuItem(resourceMap.getString("exportPersonnel.text")); //$NON-NLS-1$
menuItem.addActionListener(ev -> personnelTab.getCampaignGui().miExportPersonActionPerformed(ev));
menuItem.setEnabled(true);
popup.add(menuItem);
if (personnelTab.getCampaign().getCampaignOptions().getUseAtB()
&& StaticChecks.areAllActive(selected)) {
menuItem = new JMenuItem(resourceMap.getString("sack.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_SACK);
menuItem.addActionListener(this);
popup.add(menuItem);
}
menu = new JMenu(resourceMap.getString("gmMode.text")); //$NON-NLS-1$
menuItem = new JMenu(resourceMap.getString("changePrisonerStatus.text")); //$NON-NLS-1$
menuItem.add(newCheckboxMenu(
Person.getPrisonerStatusName(Person.PRISONER_NOT),
makeCommand(CMD_CHANGE_PRISONER_STATUS, OPT_PRISONER_FREE),
person.getPrisonerStatus() == Person.PRISONER_NOT));
menuItem.add(newCheckboxMenu(
Person.getPrisonerStatusName(Person.PRISONER_YES),
makeCommand(CMD_CHANGE_PRISONER_STATUS, OPT_PRISONER_IMPRISONED),
(person.getPrisonerStatus() == Person.PRISONER_YES) && !person.isWillingToDefect()));
menuItem.add(newCheckboxMenu(
resourceMap.getString("prisonerWillingToDefect.text"), //$NON-NLS-1$
makeCommand(CMD_CHANGE_PRISONER_STATUS, OPT_PRISONER_IMPRISONED_DEFECTING),
(person.getPrisonerStatus() == Person.PRISONER_YES) && person.isWillingToDefect()));
menuItem.add(newCheckboxMenu(
Person.getPrisonerStatusName(Person.PRISONER_BONDSMAN),
makeCommand(CMD_CHANGE_PRISONER_STATUS, OPT_PRISONER_BONDSMAN),
person.getPrisonerStatus() == Person.PRISONER_BONDSMAN));
menuItem.setEnabled(personnelTab.getCampaign().isGM());
menu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("removePerson.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_REMOVE);
menuItem.addActionListener(this);
menuItem.setEnabled(personnelTab.getCampaign().isGM());
menu.add(menuItem);
if (!personnelTab.getCampaign().getCampaignOptions().useAdvancedMedical()) {
menuItem = new JMenuItem(resourceMap.getString("healPerson.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_HEAL);
menuItem.addActionListener(this);
menuItem.setEnabled(personnelTab.getCampaign().isGM());
menu.add(menuItem);
}
menuItem = new JMenuItem(resourceMap.getString("addXP.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_ADD_XP);
menuItem.addActionListener(this);
menuItem.setEnabled(personnelTab.getCampaign().isGM());
menu.add(menuItem);
menuItem = new JMenuItem(resourceMap.getString("setXP.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_SET_XP);
menuItem.addActionListener(this);
menuItem.setEnabled(personnelTab.getCampaign().isGM());
menu.add(menuItem);
if (personnelTab.getCampaign().getCampaignOptions().useEdge()) {
menuItem = new JMenuItem(resourceMap.getString("setEdge.text")); //$NON-NLS-1$
menuItem.setActionCommand(CMD_SET_EDGE);
menuItem.addActionListener(this);
After Change
menu.add(cbMenuItem);
popup.add(menu);
} else if (StaticChecks.areAllActive(selected)) {
if (gui.getCampaign().getCampaignOptions().useEdge()) {
menu = new JMenu(resourceMap.getString("setEdgeTriggers.text")); //$NON-NLS-1$
submenu = new JMenu(resourceMap.getString("on.text")); //$NON-NLS-1$
menuItem = new JMenuItem(resourceMap.getString("edgeTriggerHeadHits.text")); //$NON-NLS-1$